react dangerouslySetInnerHTML

JSX 渲染方式

react 一般的渲染语法是 JSX,具体介绍参见 JSX 简介

DOM 内容会被预先统一转义,以字符串的形式被页面渲染,这样可以有效地防止 XSS (cross-site-scripting,跨站脚本) 攻击

但是,当变量内含有元素标签时,由于被统一转成了字符串,元素标签并不会被解读成 DOM 元素。因此,在某些特定情况,需要使用 dangerouslySetInnerHTML 实现渲染

dangerouslySetInnerHTML

dangerouslySetInnerHTML 是 react 提供的一种元素属性,用法如下:

1
<div dangerouslySetInnerHTML = {{ __html: param }} ><div/>

说明:

第一个 {} 代表 jsx 语法开始,第二个 {} 是 dangerouslySetInnerHTML 接收的一个对象

DOM 元素会直接渲染 param 的值,而不会进行转义,因此请对 param 的可能取值充分检查,充分净化,充分掌握!

尽量少用 dangerouslySetInnerHTML!